//
//  ArithmeticVC.m
//  SYPerfectDemo
//
//  Created by Lssyyy on 2018/8/4.
//  Copyright © 2018年 Lssyyy. All rights reserved.
//

#import "ArithmeticVC.h"

@interface ArithmeticVC ()

@end

@implementation ArithmeticVC

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"常见算法";
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//    [self maopao];
    [self xuanze];
}
#pragma mark 冒泡排序
//1. 首先将所有待排序的数字放入工作列表中。

//2. 从列表的第一个数字到倒数第二个数字，逐个检查：若某一位上的数字大于他的下一位，则将它与它的下一位交换。

//3. 重复2号步骤(倒数的数字加1。例如：第一次到倒数第二个数字，第二次到倒数第三个数字，依此类推...)，直至再也不能交换。
- (void)maopao{
    NSMutableArray *arr=[NSMutableArray arrayWithArray:@[@"17",@"28",@"36",@"15",@"29",@"39"]];
    NSLog(@"排序前%@",arr);

    for (NSInteger i = 0 ; i < arr.count - 1; i++) {
        for (NSInteger j = 0 ; j < arr.count - 1 -i; j++) {
            if ([arr[j] integerValue] > [arr[j+1]integerValue]) {
                NSInteger temp = [arr[j] integerValue];
                arr[j] = arr[j+1];
                arr[j+1] = [NSString stringWithFormat:@"%ld",temp];
            }
        }
         NSLog(@"排序中%@",arr);
    }
    NSLog(@"排序后%@",arr);
}

#pragma mark 选择排序
//1. 设数组内存放了n个待排数字，数组下标从1开始，到n结束。
//
//2. i=1
//
//3. 从数组的第i个元素开始到第n个元素，寻找最小的元素。（具体过程为:先设arr[i]为最小，逐一比较，若遇到比之小的则交换）
//
//4. 将上一步找到的最小元素和第i位元素交换。
//
//5. 如果i=n－1算法结束，否则回到第3步
- (void)xuanze{
    NSMutableArray *arr=[NSMutableArray arrayWithArray:@[@"17",@"28",@"36",@"15",@"29",@"39"]];
    NSLog(@"排序前%@",arr);
    for (NSInteger i = 0 ; i < arr.count-1; i++) {
        for (NSInteger j = i+1; j < arr.count; j++) {
            if ([arr[i] integerValue] > [arr[j] integerValue]) {
                NSInteger temp = [arr[i] integerValue];
                arr[i] = arr[j];
                arr[j] = [NSString stringWithFormat:@"%ld",temp];
            }
        }
         NSLog(@"排序中%@",arr);
    }
    NSLog(@"排序后%@",arr);
}

@end
